#ifndef _DB_ACCESSOR_H
#define _DB_ACCESSOR_H

#include "collaboration.h"
#include "MIApplication.h"
#include "dbConnector.h"

//constantes para la conexion
#define __HOST_DB__ "localhost"
#define __USER_DB__ "admin"
#define __PASSWORD_DB__ "admin"
#define __DB_DB__ "collaboration_data"

/**
* Clase que permite acceder a la base de datos de metainformacion.
* Permite abstraer del tipo de almacenamiento usado (base de datos, fichero, etc.)
*
* @author Carlos Rodriguez Dominguez
*/
class DBAccessor {
private:
	DBConnector* conexion; /**< Conector para la base de datos */
	
	/**
	* Elimina toda la informacion contenida en la base de datos
	*/
	void clearDB();
	
public:
	
	/**
	* Constructor. Abre una conexion con la base de datos
	*/
	DBAccessor();
	
	/**
	* Destructor. Cierra la conexion con la base de datos
	*/
	virtual ~DBAccessor();
	
	/**
	* Obtiene el listado de metainformacion de aplicaciones del sistema
	*/
	Collaboration::ListOfApplications get();
	
	/**
	* Guarda de manera persistente la metainformacion de aplicaciones
	* del sistema
	*
	* @param l Lista con la metainformacion de las aplicaciones a guardar
	*/
	void set(Collaboration::ListOfApplications& l);
	
	/**
	* Crea un log de acceso a la base de datos
	*/
	void createLog();
};

#endif
